<!DOCTYPE html>
<!--
     SPDX-License-Identifier: CC-BY-SA-4.0
     SPDX-FileCopyrightText: 2020 seL4 Project a Series of LF Projects, LLC.
-->
<!-- Page last generated 2025-02-20 03:16:15 +0000 -->
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>seL4 12.1.0 | seL4 docs</title>

    <!-- Our stylesheet and theme stylesheet.  Contains bootstrap. -->
    <link rel="stylesheet" href="/assets/css/style.css" type="text/css">
    <!-- Font awesome -->
    <link href="https://use.fontawesome.com/releases/v5.0.8/css/all.css" rel="stylesheet">
    <link href="https://fonts.googleapis.com/css2?family=Roboto&display=swap" rel="stylesheet">
    <!-- Pygments syntax highlighting  -->
    <link rel="stylesheet" href="/assets/css/highlighting/trac.css" type="text/css">
    <link rel="icon" type="image/x-icon" href="/assets/favicon.ico"><script defer data-domain="docs.sel4.systems"
	    src="https://analytics.sel4.systems/js/script.js"></script></head>

  <body class="container-fluid">

    



<header>
  <ul class="row menu">
    <li class="col-xs-12 col-md-2" >
            <a href="https://sel4.systems" class="skip-icon">
              <img class="img-responsive" src="/assets/logo-text-white.svg" alt="seL4 logo" />
            </a>
    </li>
    <li class="col-xs-12 col-md-10 menu">
      <nav aria-label="Banner links">
        <h2><a href="/Resources" />Resources</h2>
        <h2><a href="/processes" />Contributing</a></h2>
        <h2><a href="/projects" />Projects</h2>
        <h2><a href="/Tutorials" />Tutorials</h2>
        <iframe title="DuckDuckGo search bar" src="https://duckduckgo.com/search.html?site=docs.sel4.systems&prefill=Search%20sel4.systems" style="overflow:hidden;margin-bottom:10px; padding:0;height:40px;float:right;border-width: 0px"></iframe>
      </nav>
    </li>
  </ul>
  <div class="clear"></div>
  
<div class="breadcrumbs bootstrap hidden-sm-down">
  <nav class="sel-breadcrumb" aria-label="Breadcrumb" >
    <ol class=" list-unstyled" vocab="http://schema.org/" typeof="BreadcrumbList">
      
      
        

        

        <li class="breadcrumb-item" property="itemListElement" typeof="ListItem">
            <a property="item" typeof="WebPage" href="/">
              <span property="name"><b>seL4 Docs</b></span>
            </a>
            <meta property="position" content="1" />
        </li>
      
        

        

        <li class="breadcrumb-item" property="itemListElement" typeof="ListItem">
            <a property="item" typeof="WebPage" href="/releases/sel4">
              <span property="name"><b>seL4 releases</b></span>
            </a>
            <meta property="position" content="2" />
        </li>
      
        

        
          <li class="breadcrumb-item" property="itemListElement" typeof="ListItem">
            <span property="name">seL4 12.1.0</span>
            <meta property="position" content="3" /></li>
          
    </ol>
  </nav>
  <nav class="sel-version" aria-label="Current Versions">
    <ol class="list-unstyled">
      <li class="list-unstyled text-right" style="margin-left:auto; padding:0rem 0rem;">
        Current versions:</li>
      <li class="list-unstyled text-right">
      <a href="/releases/sel4/13.0.0"><b>seL4-13.0.0</b></a></li>
      <li class="list-unstyled text-right">
      <a href="/releases/microkit/1.4.1"><b>microkit-1.4.1</b></a></li>
      <li class="list-unstyled text-right">
      <a href="/releases/camkes/camkes-3.11.0"><b>camkes-3.11.0</b></a></li>
      <li class="list-unstyled text-right">
      <a href="/releases/capdl/0.3.0"><b>capDL-0.3.0</b></a></li>
      </ol>
  </nav>
  <div class='clear'></div>
</div>


</header>

    <main>
      <div class="row">
  <div class="hidden-xs col-sm-4 col-md-3 col-lg-2">
    


<div class="sidebar">
















</div>

  </div>
  <div class="content col-sm-8 col-md-6 col-lg-7 main">
    <h1 id="sel4-version-1210-release">seL4 Version 12.1.0 Release</h1>
<p>Announcing the release of <code class="language-plaintext highlighter-rouge">seL4 12.1.0</code> with the following changes:</p>

<p>12.1.0 2021-06-10: SOURCE COMPATIBLE</p>

<h2 id="changes">Changes</h2>

<ul>
  <li>Moved kernel configuration header to libsel4.</li>
  <li>Improved benchmarking:
    <ul>
      <li>Made the kernel log buffer to be derived from cmake config.</li>
      <li>Added x86_64 kernel log buffer.</li>
      <li>Implemented RISC-V benchmark timestamping.</li>
      <li>Implemented benchmark log buffer for RISC-V.</li>
    </ul>
  </li>
  <li>Moved cap functions out of inline to make changing cap bitfields less noisy.</li>
  <li>Removed weak definition of the __sel4_ipc_buffer variable which was causing large thread local storages to be
required.</li>
  <li>Prepared the bitfield generator for Isabelle 2021.</li>
  <li>Made a number of improvements to the CMake build scripts.</li>
  <li>Added pre-processor ‘include guards’ for auto-generated files.</li>
  <li>Added missing CONFIG_PLAT_IMX7 pre-processor ‘#define’s.</li>
  <li>Added <code class="language-plaintext highlighter-rouge">#pragma once</code> to the autoconf headers.</li>
  <li>Removed <code class="language-plaintext highlighter-rouge">HAVE_AUTOCONF</code> guards in <code class="language-plaintext highlighter-rouge">sel4/config.h</code>.</li>
  <li>Improved the manual:
    <ul>
      <li>Corrected descriptions of CNode addressing.</li>
      <li>Documented initial thread’s SMMU caps.</li>
    </ul>
  </li>
  <li>Improved libsel4:
    <ul>
      <li>Removed redundant <code class="language-plaintext highlighter-rouge">HAVE_AUTOCONF</code> header guards in libsel4.</li>
      <li>Added missing <code class="language-plaintext highlighter-rouge">macros.h</code> #include in libsel4.</li>
      <li>Cleaned-up <code class="language-plaintext highlighter-rouge">macros.h</code> in libsel4.</li>
      <li>Added checks to use <code class="language-plaintext highlighter-rouge">_Static_assert()</code> in libsel4 if it is available.</li>
      <li>Unified definitions in <code class="language-plaintext highlighter-rouge">simple_types.h</code> in libsel4.</li>
      <li>Added <code class="language-plaintext highlighter-rouge">printf</code> format specifier <code class="language-plaintext highlighter-rouge">PRI_sel4_word</code> for printing word types.</li>
      <li>Unified seL4 type definitions.</li>
    </ul>
  </li>
  <li>Added specific <code class="language-plaintext highlighter-rouge">printf</code> formatting for seL4_Word.</li>
  <li>Changed some variables to use <code class="language-plaintext highlighter-rouge">BOOT_BSS</code> instead of <code class="language-plaintext highlighter-rouge">BOOT_DATA</code> to save space in the ELF file.</li>
  <li>Replaced the <code class="language-plaintext highlighter-rouge">capDL()</code> function with a generic <code class="language-plaintext highlighter-rouge">debug_capDL</code> function that is intended to be implemented by all
architectures.</li>
  <li>Reduced <code class="language-plaintext highlighter-rouge">printf</code>s stack usage.</li>
  <li>Fixed <code class="language-plaintext highlighter-rouge">ksnprintf()</code> corner case handling.</li>
  <li>Fixed NULL <code class="language-plaintext highlighter-rouge">printf</code> output wrapper handling.</li>
  <li>Cleaned up the printing API implementation.</li>
  <li>Changed code to pass buffer to <code class="language-plaintext highlighter-rouge">printf</code> output channel.</li>
  <li>Refactored the kernel console handling.</li>
  <li>Added support for <code class="language-plaintext highlighter-rouge">PRIu64</code> and <code class="language-plaintext highlighter-rouge">SEL4_PRIu_word</code> in the kernel.</li>
  <li>Changed various <code class="language-plaintext highlighter-rouge">printf</code> conversion specifiers to use <code class="language-plaintext highlighter-rouge">SEL4_PRIx_word</code> specifiers.</li>
</ul>

<h3 id="mcs">MCS</h3>

<ul>
  <li>Fixed a physical counter access issue on MCS on EL2.</li>
  <li>Added MCS support for the ZynqMP.</li>
  <li>Changed invokeSchedControl_Configure to always produce a scheduling context that is active and has configured
refills.</li>
  <li>Prevented the binding of scheduling contexts to blocked TCBs.</li>
  <li>Fixed conversions of ticks to microseconds on aarch64.</li>
  <li>Added an additional sporadic flag to <code class="language-plaintext highlighter-rouge">seL4_SchedControl_Configure</code> which allows the option to create a sporadic
scheduling context.</li>
  <li>Added explicit checks to not unblock the current scheduling context.</li>
  <li>Fixed MCS and aarch64 VCPU interrupt interaction.</li>
  <li>Renamed MCS kernel configuration option <code class="language-plaintext highlighter-rouge">KernelStaticMaxBudgetUs</code> to <code class="language-plaintext highlighter-rouge">KernelStaticMaxPeriodUs</code>.</li>
  <li>Added check to make sure that the current thread will not yield to multiple threads.</li>
  <li>Added check to account for an inactive scheduling context at preemption.</li>
  <li>Deferred charging time budget in a preempted invocation.</li>
  <li>Added code to update <code class="language-plaintext highlighter-rouge">ksDomainTime</code> in <code class="language-plaintext highlighter-rouge">updateTimestamp</code>.</li>
  <li>Added call to <code class="language-plaintext highlighter-rouge">updateTimestamp</code> in a preemption point.</li>
  <li>Added code to clear ksConsume when charging time to a revoked scheduling context.</li>
  <li>Added code to cancel IPC when finalising reply caps.</li>
  <li>Fixed a dereference of a scheduling context after it’s removed from the associated TCB.</li>
  <li>Added MCS to the preprocess check.</li>
</ul>

<h3 id="x86">x86</h3>

<ul>
  <li>Removed a redundant de-reference for <code class="language-plaintext highlighter-rouge">seL4_X86DangerousRDMSR</code> in ia32.</li>
  <li>Added a config option to set the frequency of the TSC.</li>
  <li>Optimized the boot image size for x86_64.</li>
  <li>Removed the PT_PHDR segment from the linker script to work around an issue in a variant of syslinux that treats a
PT_PHDR segment as distinct from a PT_LOAD segment.</li>
</ul>

<h3 id="arm">Arm</h3>

<ul>
  <li>FPU ownership is now also given away on thread deletion instead of only on FPU exception.</li>
  <li>Added basic build support for A35 core.</li>
  <li>Fixed read/write of the VCPU CPACR register.</li>
  <li>Fixed invalidation of the VIPI I-cache in hypervisor mode.</li>
  <li>Removed duplicate interrupts for the zynqmp in its DTS.</li>
  <li>Updated device definitions for the exynos5.</li>
  <li>Added Raspberry Pi 4 support.</li>
  <li>Updated Ethernet interrupts in the ZynqMP.</li>
  <li>Added i.MX6 Nitrogen6_SoloX support.</li>
  <li>Fixed CMake configurations for the ZynqMP and the Ultra96.</li>
  <li>Fixed the platform <code class="language-plaintext highlighter-rouge">#define</code> for the i.MX6 Nitrogen6_SoloX.</li>
  <li>Fixed I-cache invalidation on aarch64 SMP.</li>
  <li>Fixed the usage of KernelPaddrUserTop on Arm platforms.</li>
  <li>Added support for the i.MX low-power UART.</li>
  <li>Added an option to ignore SErrors which is enabled on default for the TX2.</li>
</ul>

<h3 id="risc-v">RISC-V</h3>

<ul>
  <li>Added PLIC driver and updated the DTS for the Ariane.</li>
  <li>Merged the PLIC drivers for the Ariane and the Hifive.</li>
  <li>Updated default timer frequency for the Ariane.</li>
  <li>Map devices with large pages on 32 and 64-bit kernel.</li>
  <li>Replaced mentions of BBL with OpenSBI.</li>
  <li>Added definitions of the KernelOpenSBIPlatform variable for RISC-V platforms.</li>
  <li>Removed instances of passing <code class="language-plaintext highlighter-rouge">extra_caps_t</code> by value for binary verification purposes.</li>
  <li>Removed <code class="language-plaintext highlighter-rouge">slot_range_t</code> for binary verification purposes.</li>
  <li>Removed <code class="language-plaintext highlighter-rouge">DONT_TRANSLATE</code> tag on ‘read_sip’ for binary verification purposes.</li>
  <li>Added more efficient clz and ctz implementations to substitute the lack of machine instructions to count leading and
trailing zeroes.</li>
  <li>Updated kernel bootstrap message to be the same as the one on Arm.</li>
  <li>Added some fastpath improvements for RISC-V.</li>
  <li>Added extra snippets of code to track kernel entries for RISC-V.</li>
  <li>Added a configuration guard for fastpath on RISC-V.</li>
  <li>Reorganised <code class="language-plaintext highlighter-rouge">traps.S</code> so that syscalls and fastpath checks were done after interrupts and exceptions checks to avoid
exceptions being interpreted as null-syscalls.</li>
  <li>Added support for <code class="language-plaintext highlighter-rouge">riscv64-elf-</code> toolchain.</li>
  <li>Fixed a register bug in the assembly entry point for SMP with regards to the elfloader passing HART and core IDs.</li>
</ul>

<h2 id="upgrade-notes">Upgrade Notes</h2>

<ul>
  <li>Scheduling contexts can now be configured as constant-bandwidth or sporadic server.
    <ul>
      <li>Constant bandwidth observes a continuous constant bandwidth of budget/period.</li>
      <li>Sporadic server behaves as described by Sprunt et. al.</li>
      <li>In an overcommitted system, sporadic preserves accumulated time.</li>
    </ul>
  </li>
  <li>There are new <code class="language-plaintext highlighter-rouge">PRIx</code> and <code class="language-plaintext highlighter-rouge">SEL4_PRIx</code> <code class="language-plaintext highlighter-rouge">printf</code> conversion specifiers that can now be used inside the kernel.</li>
  <li>x86_64 kernel binaries are now smaller and may be structured differently compared to previous kernel binaries.</li>
  <li>Kernel entry benchmarking can now be done on RISC-V.</li>
  <li>AUTOCONF_INCLUDED is no longer defined. The seL4 build system has stopped
using autoconf a long time ago and this define has been kept for compatibility
since then. It is no longer used anywhere by now, so it can be removed.</li>
</ul>

<h1 id="full-changelog">Full changelog</h1>
<p>Refer to the git log in
<a href="https://github.com/seL4/seL4">https://github.com/seL4/seL4</a> using <code class="language-plaintext highlighter-rouge">git log 12.0.0..12.1.0</code></p>

<h1 id="more-details">More details</h1>
<p>See the
<a href="http://sel4.systems/Info/Docs/seL4-manual-12.1.0.pdf">12.1.0 manual</a> included in the release or ask on the mailing list!</p>


  </div>







  
  
<div class="sidebar-toc hidden-xs hidden-sm col-md-3 col-lg-3">
  
    <ul class="section-nav">
    	<h2> seL4 </h2> 
        <li>
          
          <a style="" class="" href="/projects/sel4/">
            Documentation homepage
          </a>
        </li>




        <li>
          
          <a style="" class="" href="/projects/sel4/status.html">
            Status
          </a>
        </li>














    
        <h3>Repositories</h3>
    
        <li>
          <a class="" href="https://github.com/seL4/sel4">
            sel4
          </a>
        </li>









<h3>Releases</h3>

    
      <li>
        <a style="" href="/releases/sel4/13.0.0.html">
          seL4 13.0.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-13.0.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style=" font-weight: bold; " href="/releases/sel4/12.1.0.html">
          seL4 12.1.0
        </a> (<a style=" font-weight: bold; " href="http://sel4.systems/Info/Docs/seL4-manual-12.1.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/12.0.0.html">
          seL4 12.0.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-12.0.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/11.0.0.html">
          seL4 11.0.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-11.0.0.pdf">manual</a>)
      </li>

    


    


    
      <li>
        <a style="" href="/releases/sel4/10.1.1.html">
          seL4 10.1.1
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-10.1.1.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/10.1.0.html">
          seL4 10.1.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-10.1.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/10.0.0.html">
          seL4 10.0.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-10.0.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/9.0.1.html">
          seL4 9.0.1
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-9.0.1.pdf">manual</a>)
      </li>

    


    


    
      <li>
        <a style="" href="/releases/sel4/9.0.0.html">
          seL4 9.0.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-9.0.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/8.0.0.html">
          seL4 8.0.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-8.0.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/7.0.0.html">
          seL4 7.0.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-7.0.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/6.0.0.html">
          seL4 6.0.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-6.0.0.pdf">manual</a>)
      </li>

    


    


    
      <li>
        <a style="" href="/releases/sel4/5.2.0.html">
          seL4 5.2.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-5.2.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/5.1.0.html">
          seL4 5.1.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-5.1.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/5.0.0.html">
          seL4 5.0.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-5.0.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/4.0.0.html">
          seL4 4.0.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-4.0.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/3.2.0.html">
          seL4 3.2.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-3.2.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/3.1.0.html">
          seL4 3.1.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-3.1.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/3.0.1.html">
          seL4 3.0.1
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-3.0.1.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/3.0.0.html">
          seL4 3.0.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-3.0.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/2.1.0.html">
          seL4 2.1.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-2.1.0.pdf">manual</a>)
      </li>

    


    
      <li>
        <a style="" href="/releases/sel4/2.0.0.html">
          seL4 2.0.0
        </a> (<a style="" href="http://sel4.systems/Info/Docs/seL4-manual-2.0.0.pdf">manual</a>)
      </li>

    


    


    










    </ul>

</div>


</div>

    </main>
    


<footer class="site-footer">

  <h2 class="footer-heading">seL4 docs</h2>

  <div class="footer-col-wrapper">

    <div class="col-md-2">
      



<ul class="social-media-list">
  <li><a href="https://github.com/sel4"><i class="fab fa-github"></i> <span class="username">sel4</span></a></li><li><a href="https://github.com/sel4proj"><i class="fab fa-github"></i> <span class="username">sel4proj</span></a></li>
</ul>

    </div>

    <div class="col-md-8">
      <ul class="list-unstyled">
        <li>
          This site is for displaying seL4 related documentation.  Pull requests are welcome.
        </li>
        
          <li>
            Site last updated: Fri Feb 7 10:17:38 2025 +1100 ee78c8857c
          </li>
          <li>
          </li>
        
      </ul>
    </div>
    <div class="col-md-2">
<a href="https://github.com/seL4/docs/blob/master/content_collections/_releases/sel4/12.1.0.md">View page on GitHub</a>
      <br />
      <a href="https://github.com/seL4/docs/edit/master/content_collections/_releases/sel4/12.1.0.md">Edit page on GitHub</a>
      <br />
      <a href="/sitemap">Sitemap</a>
    </div>

  </div>

</footer>

  </body>
</html>
